package org.zhaya.sdk.processors.custom;

import io.logz.sawmill.Doc;

/**
 * 禁止如下class类的使用:
 * com.alibaba.fastjson.JSONObject;
 * java.lang.System;
 * java.lang.Runtime;
 * 禁止while,do while循环。 推荐使用for和streams
 * <p>
 * Doc内置一个Map<String, Object>，doc相关方法都是间接操作Map.
 * 封装map主要是方便处理一个x.y.z这种代表嵌套的字符串：{"x":{"y":{"z":123}}} .
 * <p>
 * 对Doc操作的常用方法：
 *
 * @see Doc#addField(String, Object) 增加field
 * Map<String,Object> source=new HashMap<>();
 * source.put("parent",345);
 * Doc doc=new Doc(source);
 * doc.addField("parent.son",123);
 * 此时Doc的结构是: {"source":{"parent":{"son":123}}}
 * @see Doc#removeField(String)  移除field
 * Map<String,Object> source=new HashMap<>();
 * source.put("parent",345);
 * source.put("son",222);
 * Doc doc=new Doc(source);
 * doc.removeField("parent");
 * 此时Doc的结构是: {"source":{"son":222}}
 */
public class DefaultPluginProcess {
    /**
     * @param doc 输入Doc
     * @throws Exception 抛出异常
     *                   方法无返回，所有的数据都在doc内部进行操作。
     */

    public void process(Doc doc) throws Exception {
        // 这里写入对Doc的操作逻辑 ...
    }
}
